草庐IT

C++ 类 class

全部标签

c++ - 为什么类的大小取决于成员声明的顺序?如何?

有人解释一下类中成员声明的顺序如何决定该类的大小。例如:classtemp{public:inti;shorts;charc;};上述类的大小为8字节。但是当成员声明的顺序改变如下classtemp{public:charc;inti;shorts;};那么类的大小是12字节。怎么做? 最佳答案 上述行为背后的原因是数据结构对齐和填充。基本上,如果您正在创建一个4字节变量,例如int,它将与四字节边界对齐,即它将从内存中的地址开始,该地址是4的倍数。同样适用于其他数据类型。2字节短应从偶数内存地址开始,依此类推。因此,如果您在int

c++ - 为什么类的大小取决于成员声明的顺序?如何?

有人解释一下类中成员声明的顺序如何决定该类的大小。例如:classtemp{public:inti;shorts;charc;};上述类的大小为8字节。但是当成员声明的顺序改变如下classtemp{public:charc;inti;shorts;};那么类的大小是12字节。怎么做? 最佳答案 上述行为背后的原因是数据结构对齐和填充。基本上,如果您正在创建一个4字节变量,例如int,它将与四字节边界对齐,即它将从内存中的地址开始,该地址是4的倍数。同样适用于其他数据类型。2字节短应从偶数内存地址开始,依此类推。因此,如果您在int

c++ - “enum class”的递增和递减

众所周知,C++03中enum的递增和递减是非法的,因为C++03的enum可能不是连续的。但是C++11标准引入了新的enumclass构造,根据Wikipedia的说法,它更加类型安全,因为它不是建立在任何简单的可数类型上的。所以现在,如果我们有一个枚举值的有界列表,我们可以写类似enumclassColors{Black,Blue,White};//...Colorscolor=Colors::White;color++;它会正常工作吗(例如,增加White将返回Black并且减少Black将返回White)?如果我们不能编写这样的代码,您是否知道boost或Qt中的任何类似行为

c++ - “enum class”的递增和递减

众所周知,C++03中enum的递增和递减是非法的,因为C++03的enum可能不是连续的。但是C++11标准引入了新的enumclass构造,根据Wikipedia的说法,它更加类型安全,因为它不是建立在任何简单的可数类型上的。所以现在,如果我们有一个枚举值的有界列表,我们可以写类似enumclassColors{Black,Blue,White};//...Colorscolor=Colors::White;color++;它会正常工作吗(例如,增加White将返回Black并且减少Black将返回White)?如果我们不能编写这样的代码,您是否知道boost或Qt中的任何类似行为

c++ - 学习C或C++会对我的计算机造成危险吗?

Closed.Thisquestionisopinion-based。它当前不接受答案。想改善这个问题吗?更新问题,以便editingthispost用事实和引用来回答。3年前关闭。Improvethisquestion刚开始学习C或C++时,是否存在诸如危险知识之类的东西?换句话说,我“偶然地”编写并编译格式化硬盘驱动器,使操作系统无法使用或在更坏的情况下自动删除计算机上的随机文件的代码段的可能性是什么?名副其实的东西格式C:/要么rm-rf/如果我刚开始修改低级C代码,甚至弄乱了库,那么需要注意一些基本知识?如果实际上潜伏着这些潜在危险,有什么好的策略可以使开发环境在日常系统中处于

c++ - 学习C或C++会对我的计算机造成危险吗?

Closed.Thisquestionisopinion-based。它当前不接受答案。想改善这个问题吗?更新问题,以便editingthispost用事实和引用来回答。3年前关闭。Improvethisquestion刚开始学习C或C++时,是否存在诸如危险知识之类的东西?换句话说,我“偶然地”编写并编译格式化硬盘驱动器,使操作系统无法使用或在更坏的情况下自动删除计算机上的随机文件的代码段的可能性是什么?名副其实的东西格式C:/要么rm-rf/如果我刚开始修改低级C代码,甚至弄乱了库,那么需要注意一些基本知识?如果实际上潜伏着这些潜在危险,有什么好的策略可以使开发环境在日常系统中处于

c++ - 错误 : C2228: left of '' must have class/struct/union

我是一名长期使用Qt学习C++的Java用户,但我在理解方法的工作原理时遇到了很多麻烦。现在,我正在尝试找出数据库,并尝试使用标题来简化我的代码。通常在Java中,我只有一个名为DatabaseControl的类,它带有一个void方法,可以执行我想要的任何操作。例如,将员工添加到数据库中,就像我现在正在做的那样。我会通过做类似的事情来实例化这个类DatabaseControlmyDBControl=newDatabaseControl();然后执行该方法myDBControl.addEmploye();这会弹出一系列输入框,供用户输入员工的信息-姓名、部门等。那么,现在转到C++。我

c++ - 错误 : C2228: left of '' must have class/struct/union

我是一名长期使用Qt学习C++的Java用户,但我在理解方法的工作原理时遇到了很多麻烦。现在,我正在尝试找出数据库,并尝试使用标题来简化我的代码。通常在Java中,我只有一个名为DatabaseControl的类,它带有一个void方法,可以执行我想要的任何操作。例如,将员工添加到数据库中,就像我现在正在做的那样。我会通过做类似的事情来实例化这个类DatabaseControlmyDBControl=newDatabaseControl();然后执行该方法myDBControl.addEmploye();这会弹出一系列输入框,供用户输入员工的信息-姓名、部门等。那么,现在转到C++。我

c++ - 从 C `goto` 错误处理范例转换到 C++ 异常处理范例

我是一名学习C++的C程序员。在C中,有一个常见的gotoidiomusedtohandleerrorsandexitcleanlyfromafunction.我读过通过try-catchblock处理异常是面向对象程序中的首选,但我在C++中实现这个范例时遇到了麻烦。以C中的以下函数为例,它使用goto错误处理范例:unsignedfoobar(void){FILE*fp=fopen("blah.txt","r");if(!fp){gotoexit_fopen;}/*theblackboxfunctionperformsvarious*operationson,andotherwis

c++ - 从 C `goto` 错误处理范例转换到 C++ 异常处理范例

我是一名学习C++的C程序员。在C中,有一个常见的gotoidiomusedtohandleerrorsandexitcleanlyfromafunction.我读过通过try-catchblock处理异常是面向对象程序中的首选,但我在C++中实现这个范例时遇到了麻烦。以C中的以下函数为例,它使用goto错误处理范例:unsignedfoobar(void){FILE*fp=fopen("blah.txt","r");if(!fp){gotoexit_fopen;}/*theblackboxfunctionperformsvarious*operationson,andotherwis